package route

import (
	"github.com/gin-gonic/gin"
	"new_ginblog/config"
	v1 "new_ginblog/internal/api/v1"
	"new_ginblog/internal/middleware"
)

func InitRouter() {
	gin.SetMode(config.AppMode)
	g := gin.New() // 初始化gin引擎 不自动调用中间件
	g.Use(gin.Recovery())
	g.Use(middleware.Cors()) // 跨域中间件

	// 管理员才可以进行以下操作
	// 删除全部类型的数据    修改用户数据    修改分类数据
	admin := g.Group("/admin/v1")
	{
		admin.Use(middleware.JwtAccessToken()) //jwt中间件
		// post：增加     put：修改     delete：删除    get：查询
		// 用户操作
		admin.DELETE("/user/delete/:id", v1.DeleteUser)
		admin.PUT("/user/update/:id", v1.UpdateUser)

		// 文章操作
		admin.DELETE("/article/delete/:id", v1.DeleteArticle)

		// 分类的操作
		admin.PUT("/category/update/:id", v1.UpdateCategory)
		admin.DELETE("/category/delete/:id", v1.DeleteCategory)
		admin.POST("/category/add", v1.AddCategory)
	}

	user := g.Group("/auth/v1")
	{
		// 用户操作
		user.POST("/user/add", v1.AddUser)
		user.GET("/user/find", v1.GetUser)

		// 文章操作
		user.PUT("/article/update/:id", v1.UpdateArticle)
		user.POST("/article/add", v1.AddArticle)
		user.GET("/article/find/:id", v1.GetArticle)
		user.GET("article/findlist/:cid", v1.GetArticleList)

		// 分类操作
		user.GET("/category/find", v1.GetCategoryList)

		// 刷新access token
		user.POST("/jwt/refresh", v1.RefreshToken)

		// 登录操作
		user.POST("/login", v1.Login)

		// 上传操作
		user.POST("/upLoad", v1.UpLoadFile)
	}

	if err := g.Run(config.HttpPort); err != nil {
		panic(err)
	}
}
